package estacio.guerra.dao.impl;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import estacio.guerra.dao.interfaces.IAnuncioDAO;
import estacio.guerra.modelo.Anuncio;

@Service
public class AnuncioDAOImpl implements IAnuncioDAO {

	@Autowired
	private SessionFactory sessionFactory;

	/**
	 * Get Hibernate Session Factory
	 * 
	 * @return SessionFactory - Hibernate Session Factory
	 */
	public SessionFactory getSessionFactory() {
		return sessionFactory;
	}

	/**
	 * Set Hibernate Session Factory
	 * 
	 * @param SessionFactory
	 *            - Hibernate Session Factory
	 */
	public void setSessionFactory(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}

	@Override
	public void insertar(Anuncio anuncio) {

		getSessionFactory().getCurrentSession().save(anuncio);

	}

	@Override
	public void modificar(Anuncio anuncio) {

		getSessionFactory().getCurrentSession().update(anuncio);

	}

	@Override
	public void eliminar(Anuncio anuncio) {

		getSessionFactory().getCurrentSession().delete(anuncio);

	}

	@Override
	public Anuncio getById(int id) {

		Criteria criteria = getSessionFactory().getCurrentSession()
				.createCriteria(Anuncio.class);

		criteria.add(Restrictions.eq("id_anuncio", id));

		return (Anuncio) criteria.uniqueResult();

	}

	@Override
	public List<Anuncio> getAllAnuncios() {

		Criteria criteria = getSessionFactory().getCurrentSession()
				.createCriteria(Anuncio.class);

		return criteria.list();
	}

}
